package com.cardgame.model.card;

import lombok.Getter;
import lombok.Setter;

import java.util.Map;

@Getter
@Setter // ✅ 添加以支持 Jackson 的字段反序列化
public class ActionCard extends Card implements IActionCard {
    // 获取自身生命值增加值
    private Integer addSelfHP;
    // 获取自身魔法值增加值
    private Integer addSelfMP;
    // 获取自身最大魔法值增加值
    private Integer addSelfMPMAX;
    // 获取敌方生命值增加值
    private Integer addEnemyHP;
    // 获取敌方魔法值增加值
    private Integer addEnemyMP;
    // 添加的 Buff 的 ID
    private Integer buffID;

    // 全参构造函数，用于业务构造
    public ActionCard(Integer id, String name, String imageUrl, String introduction, Integer price,
                      Integer addSelfHP, Integer addSelfMP, Integer addSelfMPMAX,
                      Integer addEnemyHP, Integer addEnemyMP,
                      Integer buffID,
                      Integer cost) {
                          super(id, name, imageUrl, introduction, "action", price, cost); // ⚠️ type 字符串要小写，匹配 JSON 中的 "type": "action"
                          this.addSelfHP = addSelfHP;
                          this.addSelfMP = addSelfMP;
                          this.addSelfMPMAX = addSelfMPMAX;
                          this.addEnemyHP = addEnemyHP;
                          this.addEnemyMP = addEnemyMP;
                          this.buffID = buffID;
                      }

    // 无参构造器，供 Jackson 反序列化使用
    public ActionCard() {
        super();
    }

    @Override
    public Map<String, Object> toMap() {
        Map<String, Object> map = super.toMap();
        map.put("addSelfHP", addSelfHP);
        map.put("addSelfMP", addSelfMP);
        map.put("addSelfMPMAX", addSelfMPMAX);
        map.put("addEnemyHP", addEnemyHP);
        map.put("addEnemyMP", addEnemyMP);
        map.put("buffID", buffID);
        return map;
    }
}
